home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 006a / showevnt.zip / SHOWEVNT.BAS < prev    next >
BASIC Source File  |  1993-05-01  |  7KB  |  220 lines

  1. '+--------------------------[ SHOWEVNT Ver 1.00]-----------------------------+
  2. '|  Written By Gary Meeker 05/01/93                        Updated   /  /    |
  3. '|  SYSOP: SHARP Technical Support Line BBS               Lawrenceville, GA  |
  4. '|         (404) 962-1788                          300-14400 Baud. 24 Hours  |
  5. '+---------------------------------------------------------------------------+
  6. 'V1.00 05/01/93 - Initial Release
  7.  
  8. DEFINT A-Z
  9.  
  10. '   PDQ Declarations
  11. DECLARE FUNCTION PDQValI% (Number$)
  12. DECLARE FUNCTION PDQExist (FileName$)
  13.  
  14. '   QuickPack Declarations
  15. DECLARE FUNCTION GetBit% (Array$, Element%)
  16. DECLARE SUB ShiftIL (IntVar%, NumBits%)
  17.  
  18. '   Myown Declarations
  19. DECLARE FUNCTION UnSignedL& (BYVAL X%)
  20. DECLARE SUB DelChar (Target$, Position, Char$)
  21.  
  22. '   Local Declarations
  23. DECLARE FUNCTION JulianInt2Str$(Julian)
  24. DECLARE FUNCTION ZeroStr$(Num)
  25. DECLARE SUB GetParameter(Parameter$, Flag)
  26.  
  27. TYPE EventRec
  28.     EventType AS STRING * 1             ' E or S
  29.     UnKnown AS STRING * 3               ' UnUsed?
  30.     Days2Run AS STRING * 1              ' ASC()  Bit Mapped 01 = Sun ~ 40 = Sat
  31.     BeginTime AS STRING * 5             ' hh:mm
  32.     EndTime AS STRING * 5               ' hh:mm
  33.     RunDate AS STRING * 8               ' mm-dd-yy Specific Date to run
  34.     FileName AS STRING * 8              ' Filename no extension
  35.     Reserved AS INTEGER                 ' Unused (was probably Node)
  36. END TYPE
  37.  
  38. DIM SHARED Days(0 TO 1, 1 TO 12)
  39.     Days(0, 1) =   0   :   Days(1, 1) =   0
  40.     Days(0, 2) =  31   :   Days(1, 2) =  31
  41.     Days(0, 3) =  59   :   Days(1, 3) =  60
  42.     Days(0, 4) =  90   :   Days(1, 4) =  91
  43.     Days(0, 5) = 120   :   Days(1, 5) = 121
  44.     Days(0, 6) = 151   :   Days(1, 6) = 152
  45.     Days(0, 7) = 181   :   Days(1, 7) = 182
  46.     Days(0, 8) = 212   :   Days(1, 8) = 213
  47.     Days(0, 9) = 243   :   Days(1, 9) = 244
  48.     Days(0,10) = 273   :   Days(1,10) = 274
  49.     Days(0,11) = 304   :   Days(1,11) = 305
  50.     Days(0,12) = 334   :   Days(1,12) = 335
  51.  
  52. DIM Active$(-1 TO 0), Day$(-1 TO 0), EventFile$(-1 TO 0)
  53.     Active$(-1)    = " Y    "
  54.     Active$(0)     = " N    "
  55.     Day$(-1)       = "Y"
  56.     Day$(0)        = "N"
  57.     EventFile$(-1) = " *"
  58.     EventFile$(0)  = "  "
  59.  
  60. '   Get the Command Line
  61. C$ = UCASE$(COMMAND$)
  62.  
  63. GetParameter "/N", NumberLines       ' Number Events?
  64.  
  65. StartNode = 1
  66. GetParameter "/S:", StartNode        ' Start at Event number.
  67.  
  68. NumNodes = PDQValI(C$)
  69.  
  70. DatFile$ = "PCBOARD.DAT"
  71. IF NOT PDQExist(DatFile$) THEN
  72.     PRINT DatFile$; " not found in current directory!"
  73.     END
  74. END IF
  75.  
  76. OPEN DatFile$ FOR INPUT ACCESS READ SHARED AS #1
  77.     FOR X = 1 TO 229
  78.         LINE INPUT #1, A$
  79.     NEXT X
  80.     LINE INPUT #1, EventFile$
  81.     LINE INPUT #1, EventPath$
  82. CLOSE #1
  83.  
  84. IF NOT PDQExist(EventFile$) THEN
  85.     PRINT EventFile$; " not found!"
  86.     END
  87. END IF
  88.  
  89. OPEN EventFile$ FOR BINARY ACCESS READ SHARED AS #1
  90.     GET #1,, NumEvents           ' Get the Number of Events
  91.     Bytes = NumEvents \ 8 - (NumEvents MOD 8 <> 0)
  92.     EventActive$ = STRING$(Bytes, 0)
  93.     GET #1,, EventActive$
  94.     REDIM Event(1 TO NumEvents) AS EventRec
  95.     Nodes = (LOF(1) - Bytes - 2 - LEN(Event(1)) * NumEvents) \ (NumEvents * 2)
  96.     IF NumNodes = 0 THEN NumNodes = Nodes
  97.     PRINT TAB(24); "ShowEvent - V1.00 by Gary Meeker"
  98.     PRINT
  99.     IF StartNode > Nodes THEN StartNode = 1
  100.     EndNode = StartNode + NumNodes - 1
  101.     IF EndNode > Nodes THEN EndNode = Nodes
  102.     PRINT "Event Data for Node"; StartNode; "to Node"; Endnode
  103.     REDIM LastRun(1 TO NumEvents, 1 TO Nodes), NodeExt$(1 TO Nodes)
  104.     FOR E = 1 TO NumEvents
  105.         GET #1,, Event(E)
  106.     NEXT E
  107.     FOR E = 1 TO NumEvents
  108.         FOR N = 1 TO Nodes
  109.             GET #1,, LastRun(E, N)
  110.         NEXT N
  111.     NEXT E
  112. CLOSE #1
  113. FOR N = 1 TO Nodes
  114.     NodeExt$(N) = "." + RIGHT$("00" + LTRIM$(STR$(N)), 3)
  115. NEXT N
  116.  
  117. IF NumberLines THEN
  118.     Pad$ = SPACE$(7)
  119. ELSE
  120.     Pad$ = ""
  121. END IF
  122.  
  123. PRINT
  124. PRINT Pad$; "          Batch     Begin End                     ";
  125. FOR N = StartNode TO EndNode
  126.     PRINT "  Last Run";
  127. NEXT N
  128. PRINT
  129.  
  130. PRINT Pad$; "Act  Mod  File      Time  Time   SMTWTFS  Date    ";
  131. FOR N = StartNode TO EndNode
  132.     PRINT "  Node"; LEFT$(STR$(N) + "   ", 4);
  133. NEXT N
  134. PRINT
  135.  
  136. PRINT Pad$; "═══  ═══  ════════  ═════ ═════  ═══════  ════════";
  137. FOR N = StartNode TO EndNode
  138.     PRINT "  ════════";
  139. NEXT N
  140. PRINT
  141.  
  142. FOR E = 1 TO NumEvents
  143.     IF NumberLines THEN
  144.         Pad$ = RIGHT$("  " + STR$(E), 3) + ")   "
  145.     END IF
  146.     PRINT Pad$; Active$(GetBit(EventActive$, E - 1)); Event(E).EventType$; _
  147.            "   "; Event(E).FileName$; "  "; _
  148.            Event(E).BeginTime; "-"; Event(E).EndTime; "  ";
  149.     Test = 1
  150.     Days2Run = ASC(Event(E).Days2Run$)
  151.     FOR D = 1 TO 7
  152.         PRINT Day$((Days2Run AND Test) <> 0);
  153.         ShiftIL Test, 1
  154.     NEXT D
  155.     PRINT "  "; Event(E).RunDate$;
  156.     FOR N = StartNode TO EndNode
  157.         Flag = PDQExist(EventPath$ + Event(E).FileName$ + NodeExt$(N)) OR _
  158.                 PDQExist(EventPath$ + Event(E).FileName$)
  159.         PRINT EventFile$(Flag); JulianInt2Str$(LastRun(E, N));
  160.     NEXT N
  161.     PRINT
  162. NEXT E
  163.  
  164. END
  165.  
  166.  
  167.  
  168. FUNCTION ZeroStr$(Num) STATIC
  169.     ZeroStr$ = RIGHT$("00" + LTRIM$(STR$(Num)), 2)
  170. END FUNCTION
  171.  
  172. FUNCTION JulianInt2Str$(Julian) STATIC
  173.     IF Julian <> 0 THEN
  174.         Julian& = UnSignedL&(Julian)
  175.         Year   = (100 * Julian&) \ 36525&
  176.         Temp&  = Year * 36525&
  177.         DayofYear = Julian& - (Temp& \ 100)
  178.  
  179.         IF (Temp& MOD 100) = 0 THEN
  180.             DayOfyear = DayOfYear + 1
  181.             Leap = 1
  182.         ELSE
  183.             Leap = 0
  184.         END IF
  185.         Month = 1
  186.         FOR Counter = 2 TO 12
  187.             IF Days(Leap, Counter) < DayOfYear THEN
  188.                 Month = Counter
  189.             END IF
  190.         NEXT Counter
  191.         Day = DayOfYear - Days(Leap, Month)
  192.     ELSE
  193.         Year = 0
  194.         Month = 0
  195.         Day = 0
  196.     END IF
  197.     JulianInt2Str$ = ZeroStr$(Month) + "-" + ZeroStr$(Day) + "-" + ZeroStr$(Year)
  198. END FUNCTION
  199.  
  200. SUB GetParameter(Parameter$, Par) STATIC
  201.    SHARED C$, Value$
  202.    StrLen = LEN(Parameter$)
  203.    Flag = INSTR(C$, Parameter$)
  204.    IF Flag THEN                                   ' Was Parameter present?
  205.       IF RIGHT$(Parameter$, 1) = ":" THEN         ' Yes, Is it an Optional?
  206.          EndName = INSTR(Flag, C$, " ")           '      Yes, Find End
  207.          IF EndName = 0 THEN                      '
  208.             EndName = LEN(C$) + 1                 '      Must be end of Line
  209.          END IF                                   '
  210.          Temp = EndName - Flag - StrLen           '      This is the length
  211.          Value$ = MID$(C$, Flag + StrLen, Temp)   ' So we can return this
  212.          Par = PDQValI(Value$)                    '
  213.       ELSE
  214.          Temp = 0                                 ' No, so zero length
  215.          Par = -1
  216.       END IF
  217.       DelChar C$, Flag, SPACE$(StrLen + Temp)     ' delete it all
  218.    END IF
  219. END SUB
  220.